loading
Richtek

自制车辆冷启动电池电压波形发生器



摘要

为了对车用电压预调节器进行测量,使用动态变化的输入电压源是常用的方法,这样可以确保它们即使在在冷启动造成的电池电压变化期间也能正常工作。使用 Arduino 和大电流连续模式 Buck 转换器自制一个冷启动电池电压波形发生器并非难事,本文将对其需求和自制的方法进行详细描述。



1. 概述

在开发以车辆电池作为电源的车用电子产品过程中,电路设计师需要根据 ISO 16750-2 标准的要求使用具有各种电压曲线的电源对电子产品进行测试,其中最特别的当属车辆冷启动电池电压波形,它对各种应用来说可能都是致命的威胁,因为在此事件发生的时候,电池电压可能跌落得非常快,而且会跌落到很低的电压,会给它们的电源系统带来非常大的压力。

在通常情况下,可编程电源会被用来当作此类测试的信号发生器,但将以 MCU 为核心的 Arduino Nano 控制板和大电流 Buck 转换器如立锜科技的 RT8131BGQW 结合在一起来构成一个强大的电池电压曲线模拟器也是有可能的,本文就将说明这样一个电池电压曲线模拟器是如何设计、制作出来的,其程序设计和使用方法也将一一给出来供读者参考。



2. 初步构想

要对车用电子产品使用的电压预调节器进行测量,需要使用 ISO 16750-2 给出来的输入电压波动曲线,我们现在要考虑的是如何将此标准中描述的车用电池冷启动期间的电压波形模拟出来。

Technical Document Image Preview

图 1


图 1 给出的是一个实际测量获得的车用电池电压冷启动波形,它是在环境温度大约为 -5℃ 的冬天测得的。从此图可以看出,由于寒冷,电池电压在开始的时候就已经低于 12V 了,车子启动的时候它更是掉到了 6.24V。随着电池状态和其他负载状况的不同,电池电压可能掉得多一点或少一点。当引擎被启动以后,发电机开始对电池充电,电池电压升高到了大约 14.5V。

ISO 16750 标准对冷启动期间电池电压的下坠是这样描述的:

Technical Document Image Preview

图 2


典型的电池电压下降时间是 5ms,电压可以下降到不同的水平,然后就上升到一个中间水平,紧接着就是由于引擎启动而造成的一个电压振荡过程,最后再回到它最初的电压水平上。

测试用的信号发生器应该具备生成类似波形的能力,而且应该具有容易调节其初始电压水平和电压下坠深度的能力,目的是方便检查最终产品在不同电压下降水平下的表现和其在恢复阶段的表现。

Technical Document Image Preview

图 3


图 3 给出了冷启动电池电压波形发生器的基本结构,其中包含一个 Arduino Nano MCU 板,其作用是要生成一个可变的 PWM 输出信号来反向模拟出冷启动的电池电压波形,这个 PWM 信号经过滤波以后就可以得到一个与其变化对应的电压,再将此电压经过两只电阻引入大电流 Buck 转换器的反馈网络,通过调节可变电阻便能对注入反馈网络的电流进行调节。如果注入反馈网络的电流多,Buck 转换器的输出电压便会下降得多,反之亦然。经过这样的处理,Buck 转换器的输出就可以被用来对车用电子产品的电压预调节器进行测量了,因为其输出电压是完全可控的,可以很好地模拟出 ISO 16750-2 所定义的电压波形,同时又有足够的供电能力,可以满足应用的要求。



3. 冷启动电池电压发生器的实际电路

设计要用的 Buck 转换器以 RT8131BGQW 为核心,它是一颗以连续电流模式工作的 Buck 控制器,其封装引脚配置和应用电路如图 4 所示。

Technical Document Image Preview

图 4


RT8131BGQW 是一颗电压模式控制架构的单相同步 Buck 控制器,可在 5.5V~26V 的输入电压范围内工作,其 VCC 引脚还需要一个独立的 5V 为其内部控制电路和 MOSFET 栅极驱动器供电。它具有参数可调的过流保护,通过其 VOS 引脚可设定输出过压保护窗口。它所采用的电流连续控制模式使其具有巨大的电流供应和吸入能力,这种特性使其具有快速改变输出电压的能力。我们的设计需要使其输出电压为典型的 12V,相应的补偿网络的参数可以用立锜电压模式转换器补偿网络设计工具计算求得。我们可以将其过流保护阈值设定在比较高的水平上,这样可以让其具备供应和吸入大电流脉冲的能力,这在需要驱动大型外围元件及使用大容量输入电容的情况下就是很有必要的。

我们最后得到的 RT8131B 12V 输出降压电路如图 5 所示。

Technical Document Image Preview

图 5


为了得到 12V 的输出,输入电压至少应有 16V。补偿网络的参数是根据输出电容 C16 的 ESR 参数计算得出的。VOS 引脚的连接位置与 FB 相同,目的是要拥有最大的过压保护窗口,避免在快速改变反馈调制信号的时候出现误触发。下桥开关由两只 MOSFET 构成,目的是提高过流保护的触发阈值,避免在输出电压快速变化期间出现误触发。

与 Arduino 有关的电路部分见图 6。

Technical Document Image Preview

图 6


Arduino 的 D5 引脚用作 PWM 信号输出,D6 用于驱动 LED。D2 和 D3 用作两个按钮开关的输入,每按一次 S2 就生成一次冷启动信号,按一下 S1 则会以 1.5s 的周期输出 30 次冷启动信号。

为了检验设计的正确性,我们需要通过实际的测试来看看效果,图7 中的黑色曲线是测量出来的波形,红色折线是模拟的曲线。

Technical Document Image Preview

图 7


Arduino 的 D5 引脚输出的标准 PWM 信号频率是 980Hz,这么低的频率就需要使用 3dB 带宽很低的低通滤波器,这样就提高了获得快速变化的输出电压波动的难度。为了达成设计的目标,我们使用了特殊的命令来使 Arduino D5 引脚输出 62.5kHz 的 PWM 信号,这就使得低通滤波器的 3dB 带宽可以做到 1kHz,使生成快速变化的电压波动成为可能。

生成冷启动波形的 PWM 信号的变化与 Buck 转换器输出波形的变化是相反的,图 8 是对 PWM 波形的一个模拟,它是对 Arduino 生成 PWM 信号进行编程的一个基础。

Technical Document Image Preview

图 8


PWM 调制信号是以 RT8131B 的反馈参考电压 0.8V 为基准的,这样就使得我们在减小可变电阻 P1 的值以增加调制的深度时不会造成基准电压的变化。



4. Arduino 程序

这个项目需要用到的 Arduino 程序很简单,复制并直接粘贴下述代码到 Arduino 程序编辑窗口便可以使用。

// Program for Arduino Nano for self-made car battery cold-crank waveform generator in combination with RT8131BGQW Buck controller

// Roland van Roy, Richtek Europe FAE January 2021

void setup() {

TCCR0B = TCCR0B & B11111000 | B00000001; // for PWM frequency of 62500.00 Hz, note delay(1) gives 15.8usec delay

pinMode(5,OUTPUT); // PWM output on pin 5

pinMode(6, OUTPUT); // LED mounted on pin 6

pinMode(3, INPUT); // switch mounted on pin 3

pinMode(2, INPUT); // switch mounted on pin 2

analogWrite(5, 42); //set PWM for 0.8V initial output

}

void loop() {

if (digitalRead(3)== HIGH){ // run 1 time profile

profile();

}

if (digitalRead(2)==HIGH){ // run 30 times profile with 1.5 sec in between

for (int i = 1; i<=30; i=i+1){

profile();

delay(32000); //0.5sec

delay(32000); //0.5sec

delay(32000); //0.5sec

}

}

}

void profile() { // crank profile subroutine

digitalWrite(6,HIGH); // LED ON

//step1

for (int i = 42; i <= 192; i=i+1) {

analogWrite(5, i);

delay(1); //150 steps in 1*15.8usec = 2.37msec but will be ~ 5msec when including program delay

}

//step2

delay(315); // delay 5msec

// step3

for (int i = 192; i >= 129; i=i-1) {

analogWrite(5, i);

delay(100); //63 steps in 100*15.8usec = 100msec

}

// step4

delay(3150); //50msec

// step5

for (int i = 129; i >= 105; i=i-1) {

analogWrite(5, i);

delay(126); //25 steps in 126*15.8usec = 50msec

}

// step6

delay(3150); //delay 50msec

// step7

for (int i = 105; i <= 129; i=i+1) {

analogWrite(5, i);

delay(126); //25 steps in 126*15.8usec = 50msec

}

// step8

for (int i = 129; i >= 92; i=i-1) {

analogWrite(5, i);

delay(85); //37 steps in 85*15.8usec = 50msec

}

// step9

delay(3150); //50msec

// step10

for (int i = 92; i <= 117; i=i+1) {

analogWrite(5, i);

delay(126); //25 steps in 126*15.8usec = 50msec

}

// step11

for (int i = 117; i >= 67; i=i-1) {

analogWrite(5, i);

delay(504); //50 steps in 504*15.8usec = 400msec

}

// step12

for (int i = 67; i >= 42; i=i-1) {

analogWrite(5, i);

delay(13); //25 steps in 13*15.8usec = 5msec

}

digitalWrite(6,LOW); // LED OFF

}



5. 使用冷启动电压发生器

冷启动电压波形发生器可以用来对多种设备进行测试,如车用前置预稳压器、车用 POC 摄像头系统、车用 USB-C 充电器等等。把 18V 电源连接到 RT8131B 的输入端,将 Arduino 板连接到 RT8131B EVB 的 GND、VCC 和反馈调制输入端,再把需要测试的东西连接到 RT8131B 的输出端即可。

图 9 显示的是使用冷启动信号发生器测量具有 36V 耐压、可输出 5V/3A 的车用 Buck 转换器 RTQ2104BGSP-QA 的配置情况,该 Buck 转换器的输入端就连接在 RT8131B 的输出端,它的 5V 输出则与 3A 负载连接。

Technical Document Image Preview

图 9


在这个例子中,通过可调电阻使冷启动信号发生器被调节到 Buck 转换器 RTQ2104BGSP-QA 刚好能输出 5V 的状态。从图 10 显示的测试波形图可以看到,Buck 转换器的输出(位于下面的 CH2 的波形)在转换器的输入电压接近输出电压时出现了轻微的下降。由于这颗 Buck 转换器支持高占空比工作状态,因此在 VIN = VOUT 时的输入输出电压差失很小的。

Technical Document Image Preview

图 10



6. 总结

为了对车用预稳压器进行测试,使用动态变化的输入电压是常用的方法,这样可以保证它们在出现类似冷启动期间的电池电压变化时也能正常工作。使用 Arduino 和大电流连续模式 Buck 转换器自制一个车用电池冷启动电压波形发生器并不太难,我们可以用它来对很多转换器在输入电压波动很大的情况下的表现进行测量,是一个很好用的便携式工具。




相关资源
立锜科技电子报 订阅立锜科技电子报
档案下载 PDF 下载



TOP